﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace CristoRessuscitado.Utils
{
    class GeralUtils
    {
        public static void FormatarLabelTipoTelefone(Label lbl, String telefone)
        {
            if (!string.IsNullOrEmpty(telefone))
            {
                lbl.Text = FormatarStringTelefone(telefone);
            }
        }

        public static String FormatarStringTelefone(String telefone)
        {
            if (!string.IsNullOrEmpty(telefone))
            {
                string telefoneTrim = telefone.Trim();
                String telefoneFormatado = telefoneTrim.Insert(0, "(").Insert(3, ")").Insert(4, " ");
                telefoneFormatado = telefoneFormatado.Insert(telefoneFormatado.Count() - 4, "-");

                return telefoneFormatado;
            }

            return telefone;
        }

        public static void AplicarFormatacaoPadraoDGV(DataGridView dgv)
        {
            dgv.ColumnHeadersDefaultCellStyle.Font = new Font(FontFamily.GenericSansSerif, 10.0F, FontStyle.Bold);
            dgv.BackgroundColor = Color.White;
            dgv.BorderStyle = BorderStyle.None;
            dgv.ScrollBars = ScrollBars.Vertical;
            dgv.RowHeadersVisible = false;
            dgv.MultiSelect = false;
            dgv.AllowUserToAddRows = false;
            dgv.AllowUserToDeleteRows = false;
            dgv.ReadOnly = true;
            dgv.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
            dgv.TabStop = false;
            dgv.Cursor = Cursors.Hand;
        }

        public static void ReiniciarAplicacao()
        {
            // Abre um novo processo da aplicação
            System.Diagnostics.Process.Start(Application.ExecutablePath);

            // Mata o processo atual
            System.Diagnostics.Process.GetCurrentProcess().Kill();
        }

        public static bool ValidarConexaoSQL(string servidor, string banco, string usuario, string senha)
        {
            bool conexaoValida = false;
            using (SqlConnection connection = new SqlConnection(
                                                            "Data Source=" + servidor + 
                                                            ";Initial Catalog=" + banco + 
                                                            ";User ID=" + usuario + 
                                                            ";Password=" + senha))
            {
                try
                {
                    connection.Open();
                    if (connection.State == ConnectionState.Open)
                        conexaoValida = true; // conexão válida
                }
                catch (Exception)
                { }
            }

            return conexaoValida;
        }

        public static void ExibirDialogMsgInfo(Form form, string msg)
        {
            MessageBox.Show(form, msg,
                    "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }

        public static void ExibirDialogMsgValidacao(Form form, string msg)
        {
            MessageBox.Show(form, msg,
                    "Validação", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        }

        public static void ExibirDialogMsgErro(Form form, string msg, Exception ex = null)
        {
            MessageBox.Show(form, msg,
                    "Validação", MessageBoxButtons.OK, MessageBoxIcon.Error);

            // TODO LOG?
        }
    }
}
